var ajax = function(Obj) {
  let Ajax = {
    method: Obj.type || 'GET',
    url: Obj.url,
    async: Obj.async || true,
    data: Obj.data,
    success: Obj.success,
    error: Obj.error
  };

  Ajax.url = `${Ajax.url}?newGet=${Math.random()}&`


  var XHR = null;

  if (window.XMLHttpRequest) {
      // 非IE内核
      XHR = new XMLHttpRequest();
  } else if (window.ActiveXObject) {
      // IE内核,这里早期IE的版本写法不同,具体可以查询下
      XHR = new ActiveXObject("Microsoft.XMLHTTP");
  } else {
      return alert('您的浏览器版本过低，请下载最新的浏览器');
  }

  XHR.onreadystatechange = function(data) {
    if (XHR.readyState === 4) {
      let Data = XHR.responseText;
      try {
        Data = JSON.parse(Data);
      } catch (e) {
        Data = Data;
      }
      switch (XHR.status) {
        case 200:
          if (Ajax.success && typeof Ajax.success === 'function') Ajax.success(Data);
          break;
        case 0:
          if (Ajax.error && typeof Ajax.error === 'function') Ajax.error(data);
          break;
        default:
          if(XHR.status>=400) {
            if (Ajax.error && typeof Ajax.error === 'function') Ajax.error(data);
          }
      }
    }
  }


  switch (Ajax.method) {
    case 'GET':
        get(Ajax);
      break;
    case 'POST':
        post(Ajax);
      break;
    default:
      console.error("暂时不支持的方法，自动切回 “GET”");
      get(Ajax);
  }

  function post(_ajax) {
    XHR.open(_ajax.method, _ajax.url, _ajax.async);
    try {
      XHR.send(JSON.stringify(_ajax.data));
    } catch (e) {
      XHR.send();
    }
  }

  function get(_ajax) {
    let arr = [];
    for (let key in _ajax.data) {
      arr.push(`${key}=${_ajax.data[key]}`);
    }
    XHR.open(_ajax.method, _ajax.url + arr.join('&'), _ajax.async);
    XHR.send();
  }
}


module.exports = ajax;
